package com.lyr.tcpdemo;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerThread extends Thread{

    //服务器的serverSocket
    //注意：服务器serverSocket监听的端口号要和客户端的端口号一致，否则无法建立连接
    private ServerSocket serverSocket;

    public ServerThread() {
        super("服务器：");
    }

    @Override
    public void run() {
        try {
            // 初始化服务器的serverSocket
            serverSocket=new ServerSocket(9980);
            // 使用服务器的serverSocket创建一个用于客户端建立连接的Socket
            Socket socket=serverSocket.accept();

            ///////////////////////////////// 接收客户端的消息//////////////////
            BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));


            while (true){
                // 读取客户端发送的消息
                String strSmg=br.readLine();
                System.out.println(strSmg);

             ///////////////////////////////// 发送消息到客户端//////////////////
                // 获取socket的输出流对象
                BufferedWriter bf=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                // 输出内容到网络，发送到服务器
                Scanner sc=new Scanner(System.in);

                String strSendMsg=sc.next();
                bf.write(this.getName()+strSendMsg);
                System.out.println(Thread.currentThread().getName()+strSendMsg);

                //一般输出流将换行或者回车作为一行内容的结束，所以需要在发送之前输出一个换行符或者回车符表示一行内容结束
                //然后输出流将内容发送到网络给服务器
                bf.write("\n");
                bf.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
